﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using UricaoWeb.Datos.ConexionBD.Menu;
using UricaoWeb.Datos.ConexionBD.Propiedad;
using UricaoWeb.Datos.ConexionBD.Restaurantes;
using UricaoWeb.LogicaDeNegocios.Restaurantes;

namespace UricaoWeb.LogicaDeNegocios.Menu
{
    public class NegocioMenu
    {
        public NegocioMenu()
        { }

        public static int AgregarPlato(string nombrePlato, float precioPlato, string fotoPlato, string detallePlato, bool compartirPlato, bool activoPlato)
        {
            conexionBD conBD = new conexionBD();
            return (conBD.InsertarPlato(nombrePlato, precioPlato, fotoPlato, detallePlato, compartirPlato, activoPlato));
        }

        public static int ModificarPlato(int IdPlato, string nombrePlato, float precioPlato, string fotoPlato, string detallePlato, bool compartirPlato, bool activoPlato)
        {
            conexionBD conBD = new conexionBD();
            return (conBD.ActualizarPlato(IdPlato, nombrePlato, precioPlato, fotoPlato, detallePlato, compartirPlato, activoPlato));
        }

        public static List<Plato> ObtenerTodosPlatos()
        {
            conexionBD conBD = new conexionBD();
            return (conBD.ConsultarListaPlatos());
        }

        public static Plato ObtenerTodosPlatos(int IdPlato)
        {
            conexionBD conBD = new conexionBD();
            return (conBD.ConsultarPlatoconId(IdPlato));
        }

        public static int AgregarMenu(string nombreMenu, string tipoMenu, bool activoMenu, int fkRestaurante)
        {
            conexionBD conBD = new conexionBD();
            return (conBD.InsertarMenu(nombreMenu, tipoMenu, activoMenu, fkRestaurante));
        }

        public static int ModificarMenu(int IdMenu, string nombreMenu, string tipoMenu, bool activoMenu, int fkRestaurante)
        {
            conexionBD conBD = new conexionBD();
            return (conBD.ActualizarMenu(IdMenu, nombreMenu, tipoMenu, activoMenu, fkRestaurante));
        }

        public static List<Menu> ObtenerMenus()
        {
            conexionBD conBD = new conexionBD();
            return (conBD.ConsultarListaMenu());
        }

        public static Menu ObtenerMenus(int IdMenu)
        {
            conexionBD conBD = new conexionBD();
            return (conBD.ConsultarMenuConId(IdMenu));
        }

        public static List<Menu> ObtenerMenusPorRestaurante(int idRestaurante)
        {
            conexionBD conBD = new conexionBD();
            return (conBD.ConsultarMenuPorRestaurante(idRestaurante));
        }

        public static int AgregarMenuPlato(int fkMenu, int fkPlato)
        {
            conexionBD conBD = new conexionBD();
            return (conBD.InsertarMenu_Plato(fkMenu, fkPlato));
        }

        public static int ModificarMenuPlato(int fkMenu, int fkPlato)
        {
            conexionBD conBD = new conexionBD();
            return (conBD.ActualizarMenu_Plato(fkMenu, fkPlato));
        }

        public static List<Men_Pla> ObtenerMenuPlato()
        {
            conexionBD conBD = new conexionBD();
            return (conBD.ConsultarListaMen_Pla());
        }

        public static List<Men_Pla> ObtenerMenuPlatoPorMenu(int fkMenu)
        {
            conexionBD conBD = new conexionBD();
            return (conBD.ConsultarMen_PlaConIdMenu(fkMenu));
        }

        public static Men_Pla ObtenerMenuPlatoPorPlato(int fkPlato)
        {
            conexionBD conBD = new conexionBD();
            return (conBD.ConsultarMen_PlaConIdPlato(fkPlato));
        }

        public static Plato ObtenerTodosPlatosPorNombre(string nombrePlato)
        {
            conexionBD conBD = new conexionBD();
            return (conBD.ConsultarPlatoconNombre(nombrePlato));
        }

        public static Menu ObtenerMenusPorNombre(string nombreMenu)
        {
            conexionBD conBD = new conexionBD();
            return (conBD.ConsultarMenuConNombre(nombreMenu));
        }

        public static void EliminarMenuPlatoporMenu(int fkMenu)
        {
            conexionBD conBD = new conexionBD();
            conBD.EliminarMenu_PlatoConMenu(fkMenu);
        }

        public static List<Hotel> ObtenerHoteles()
        {
            conexionBD conBD = new conexionBD();
            return (conBD.ConsultarListaHoteles());
        }

        public static List<Restaurante> ObtenerRestaurantesPorHotel(int fkHotel)
        {
            DatosRestaurante conexion = new DatosRestaurante();
            return conexion.ListaRestaurantes(fkHotel);
        }

        public static int ObtenerIdRestaurante(string nombreRestaurante)
        {
            DatosRestaurante conexion = new DatosRestaurante();
            return conexion.DarIdRestaurante(nombreRestaurante);
        }

        public static bool validarTieneCamposVaciosPlatos(string nombre, string costo, string imagen, string detalles, bool tipo)
        {
            try
            {
                if (nombre.Equals("") || costo.Equals("") || imagen.Equals("") || detalles.Equals("") || tipo == false)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            catch (NullReferenceException e)
            {
                throw;
            }
        }

        public static bool validarFloatCosto(string costo)
        {
            float flotante;
            bool cadena = float.TryParse(costo, out flotante);
            if (cadena == true)
                return true;
            else
                return false;
        }

        /// <summary>
        /// Función que verifica la extensión de las imágenes que sube el usuario
        /// </summary>
        /// <param name="nombreArchivo">Nombre del archivo que esta subiendo el usuario</param>
        /// <returns>
        /// Devuelve una lista de los distintos hoteles
        /// </returns>
        public static bool VerificarExtension(string nombreArchivo)
        {
            string extension = System.IO.Path.GetExtension(nombreArchivo);
            bool result = false;
            if (nombreArchivo != "")
            {
                if (extension.ToLower() == ".gif")
                    result = true;
                else
                    if (extension.ToLower() == ".png")
                        result = true;
                    else
                        if (extension.ToLower() == ".jpg")
                            result = true;
                        else
                            if (extension.ToLower() == ".jpeg")
                                result = true;

                return result;
            }
            return true;

        }

    }
}